package com.ssy.lingxi.order.service.web;

import com.ssy.lingxi.common.model.dto.MemberAndRoleIdDTO;
import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.order.api.model.vo.request.OrderExpressFeeConfigUpdateVO;
import com.ssy.lingxi.order.api.model.vo.request.OrderScoreConfigUpdateVO;
import com.ssy.lingxi.order.api.model.vo.response.OrderExpressFeeConfigDetailVO;
import com.ssy.lingxi.order.api.model.vo.response.OrderFreeExpressConfigVO;
import com.ssy.lingxi.order.api.model.vo.response.OrderScoreConfigDetailVO;
import com.ssy.lingxi.order.api.model.vo.response.OrderScoreConfigVO;
import com.ssy.lingxi.order.model.vo.basic.request.OrderLrcVO;
import com.ssy.lingxi.order.model.vo.basic.response.OrderLrcDetailVO;

import java.util.List;

/**
 *  @menu 系统能力 - 参数配置-[积分相关][运费相关]
 * @author wyx
 * @version 2.0.0
 * @date 2021-10-13
 */
public interface IOrderParamConfigService {
    /**
     * 查看-积分抵扣订单配置
     * @param loginUser UserLoginCacheDTO信息
     * @return 查询结果
     */
    Wrapper<OrderScoreConfigDetailVO> getScoreConfig(UserLoginCacheDTO loginUser);

    /**
     * 添加/修改-积分抵扣订单配置
     * @param loginUser UserLoginCacheDTO信息
     * @param updateVO 接口参数
     * @return 修改结果
     */
    Wrapper<Void> updateScoreConfig(UserLoginCacheDTO loginUser, OrderScoreConfigUpdateVO updateVO);

    /**
     * 查看-满额包邮配置
     * @param loginUser UserLoginCacheDTO信息
     * @return
     */
    Wrapper<OrderExpressFeeConfigDetailVO> getExpressFeeConfig(UserLoginCacheDTO loginUser);

    /**
     * 添加/修改-满额包邮配置
     * @param loginUser UserLoginCacheDTO信息
     * @param updateVO
     * @return
     */
    Wrapper<Void> updateExpressFeeConfig(UserLoginCacheDTO loginUser, OrderExpressFeeConfigUpdateVO updateVO);

    /**
     * 批量查询启用的满额包邮配置,根据会员角色id
     * @param memberAndRoleIdDTOS
     * @return
     */
    List<OrderFreeExpressConfigVO> getOrderFreeExpressConfigList(List<MemberAndRoleIdDTO> memberAndRoleIdDTOS);

    /**
     * 批量查询启用的积分抵扣订单金额的配置,根据会员角色id
     * @param memberAndRoleIdDTOS
     * @return
     */
    List<OrderScoreConfigVO> getOrderScoreConfigList(List<MemberAndRoleIdDTO> memberAndRoleIdDTOS);

    /**
     * 批量查询采购会员在平台与供应商店铺可用积分与订单可抵扣金额的配置信息
     * @param subMemberId
     * @param subRoleId
     * @param OrderLrcVO
     * @return
     */
    List<OrderLrcDetailVO> getOrderScoreAndDeductionConfigList(Long subMemberId, Long subRoleId, OrderLrcVO lrcVO);
}
